4f0c90bdde007522e2bde406abf0cc604b7e052d,contrib/dtest/src/main/java/org/jboss/byteman/contrib/dtest/Instrumentor.java,Instrumentor,injectFault,#Class#String#Class#Object[]#,300

Before Change


        }
        actionBuilder.append(")"+"\n");

        RuleBuilder ruleBuilder = new RuleBuilder(ruleName);
        if(isInterface(className)) {
            ruleBuilder.onInterface(className);
        } else {
            ruleBuilder.onClass(className);
        }
        ruleBuilder.inMethod(methodName).atEntry();
        ruleBuilder.usingHelper(BytemanTestHelper.class);
        ruleBuilder.whenTrue().doAction(actionBuilder.toString());        

        installScript("fault"+className+"."+methodName, ruleBuilder.toString());
    }

    /**

After Change


    public void injectFault(Class clazz, String methodName, Class<? extends Throwable> fault, Object[] faultArgs) throws Exception
    {
        String className = clazz.getCanonicalName();
        String ruleName = this.getClass().getCanonicalName()+"_"+className+"_"+methodName+"_faultinjection";

        StringBuilder actionBuilder = new StringBuilder();
        actionBuilder.append("setTriggering(false), debug(\"firing "+ruleName+"\", $0), ");
        actionBuilder.append("throw new "+fault.getCanonicalName()+"(");
        if(faultArgs != null) {
            for(int i = 0; i < faultArgs.length; i++) {
                String argClassName = faultArgs[i].getClass().getCanonicalName();
                boolean requireQuotes = true;
                if(argClassName.startsWith("java.lang.") && !argClassName.equals("java.lang.String")) {
                    requireQuotes = false;
                }
                if(requireQuotes) {
                    actionBuilder.append("\"");
                }
                actionBuilder.append(faultArgs[i]);
                if(requireQuotes) {
                    actionBuilder.append("\"");
                }
                if(i != faultArgs.length-1) {
                    actionBuilder.append(", ");
                }
            }
        }
        actionBuilder.append(")"+"\n");

        RuleConstructor.ClassClause builderClassClause = RuleConstructor.createRule(ruleName);
        RuleConstructor.MethodClause builderMethodClause =
                isInterface(className) ? builderClassClause.onInterface(className) : builderClassClause.onClass(className);

            RuleConstructor builder = builderMethodClause
                .inMethod(methodName)
                .atEntry()
                .helper(helperClass)
                .ifTrue()
                .doAction(actionBuilder.toString());

        installScript("fault"+className+"."+methodName, builder.build());
    }

    /**